package org.jeecg.modules.classes.entity;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.jeecg.modules.common.baseentity.BaseEntity;
import org.jeecg.modules.common.baseentity.BaseSchoolYearSemesterEntity;
import org.jeecg.modules.common.baseentity.PublicBeanPage;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * @Description: cou_class
 * @author: baochangrong
 * @Date:   2022-02-21
 * @Version: V1.0
 */
@Data
@TableName("cou_class")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@ToString(callSuper = true)
@SuperBuilder(toBuilder = true)
@ApiModel(value="cou_class对象", description="cou_class")
public class CouClass extends BaseSchoolYearSemesterEntity implements Serializable {
    private static final long serialVersionUID = 1L;
	public static final String ClassCode = "666666999";
	public static final int classStudentCapacityNum = 66666;

	/**主键ID*/
	@TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键ID")
    private String id;
	/**班级编码*/
	@Excel(name = "班级编码", width = 15)
    @ApiModelProperty(value = "班级编码")
    private String classCode;
	/**班号，用于规范班级名称，例如07代表7班*/
	@Excel(name = "班号，用于规范班级名称，例如07代表7班", width = 15)
	@ApiModelProperty(value = "班号，用于规范班级名称，例如07代表7班")
	@Dict(dicCode = "school_status")
	private String classNumber;
	/**班级名称*/
	@Excel(name = "班级名称", width = 15)
    @ApiModelProperty(value = "班级名称")
    private String className;
	/**班级简称*/
	@Excel(name = "班级简称", width = 15)
    @ApiModelProperty(value = "班级简称")
    private String classNickname;
	/**班级类型*/
	@Excel(name = "班级类型", width = 15, dicCode = "class_ttype")
	@Dict(dicCode = "class_ttype")
    @ApiModelProperty(value = "班级类型")
    private Integer classTtype;
	/**班级容量*/
	@Excel(name = "班级容量", width = 15)
    @ApiModelProperty(value = "班级容量")
    private Integer classStudentCapacity;

	/**班级的届级，如2022级*/
	@Excel(name = "班级的届级，如2022级", width = 15)
	@Dict(dicCode = "gradesession_year_code",dicText = "gradesession_year_name",dictTable = "cou_gradesession_year")
	@ApiModelProperty(value = "班级的届级，如2022级")
	private String classGradesessionYear;


	/**班级组建注册日期，一般是每年9月1日*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern="yyyy-MM-dd")
	@ApiModelProperty(value = "班级组建注册日期，一般是每年9月1日")
	private java.util.Date classEnrollmentDate;
	/**班级状态*/
	@Excel(name = "班级状态", width = 15, dicCode = "class_status")
	@Dict(dicCode = "class_status")
    @ApiModelProperty(value = "班级状态")
    private Integer classStatus;
	/**班主任(教师编码)*/
	@Excel(name = "班主任(教师编码)", width = 15)
    @ApiModelProperty(value = "班主任(教师编码)")
	@Dict(dicCode = "id",dicText = "teacher_name",dictTable = "tea_teacher")
    private String classHeadmasterCode;
	/**班级人数*/
	@Excel(name = "班级人数", width = 15)
    @ApiModelProperty(value = "班级人数")
    private Integer classStudentCount;
	/**是否启用*/
	@Excel(name = "是否启用", width = 15, dicCode = "iz_open")
	@Dict(dicCode = "iz_open")
    @ApiModelProperty(value = "是否启用")
    private Integer classIzOpen=1;
	/**班级排序*/
	@Excel(name = "班级排序", width = 15)
    @ApiModelProperty(value = "班级排序")
    private Integer classOrder;

	/**用户id*/
	@Excel(name = "用户id）", width = 15)
	@ApiModelProperty(value = "用户id")
	@Dict(dicCode = "id",dicText = "username",dictTable = "sys_user")
	private String userId;
	/**班级备注*/
	@Excel(name = "班级备注", width = 15)
    @ApiModelProperty(value = "班级备注")
    private String classRemark;
	/**是否删除*/
	@Excel(name = "是否删除", width = 15)
    @ApiModelProperty(value = "是否删除")
    private Integer classIzDelete=0;
	/**年级code*/
	@Excel(name = "年级code", width = 15)
    @ApiModelProperty(value = "年级code")
	@Dict(dicCode = "id",dicText = "grade_name",dictTable = "cou_grade")
    private String gradeCode;
	/**创建时间*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private java.util.Date createTime;

	/**一键查询字段*/
	@ApiModelProperty(value = "一键查询字段")
	@TableField(exist = false)
	private java.lang.String queryValues;
	/** 子集部门：当前登录部门的下级部门，用于按部门过滤数据**/
	@TableField(exist = false)
	private List<String> subDepIdsList;
	@TableField(exist = false)
	private String  subDepSysOrgCodes;
}
